package com.qidian.permission.controller;

import com.qidian.permission.entity.User;
import com.qidian.permission.service.UserService;
import com.qidian.permission.util.entity.PerResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.lang.annotation.Repeatable;

/**
 * @Author 18林梦雅
 * @Company 起点编程
 * @Time 2023/10/18 17:59
 * @Description
 */
@RestController
@RequestMapping("/user")
@CrossOrigin
public class UserController {
    @Autowired
   private UserService userService;

    /**
     * 请求方法： GET
     * url : /user/get
     * 参数： userId(必须，要查询的用户编号)
     * 响应：
     *  成功： `{code:200,msg:"",data:{userId:1,username:"大锤",userPass:"123".....}}`
     *  失败：`{code:400,msg:"没有数据",data:null}`
     * @param userId
     * @return
     */
    @GetMapping("/get")
    public PerResult get(Long userId){
      return   userService.queryById(userId);
    }


    /**
     * 添加用户接口
     * 请求方法： POST
     * url： /user/save
     * 参数：
     * 格式：JSON
     * 参数的内容：username,userPass
     * 响应结果：
     * 成功： ｛code:200,msg:"",data:null｝
     * 失败：
     * 失败｛code:500,msg:"错误信息",data:null｝
     * 重名 {code: 300,msg:"名字重复",data:""}
     * @param user
     * @return
     */
    @PostMapping("/save")
    public PerResult save(@RequestBody User user){
        return userService.addUser(user);
    }


    /*
    多条件分页查询接口
    请求：GET
    url： /user/list
    参数： username，userStatus, page , limit
    响应结果：
    成功： ｛code:200,msg:"", data:｛curr:1,limit:12,total:123,maxPageNum:12, data:[用户列表]｝｝
    没有数据: {code:400,msg:"" data:｛curr:1,limit:12,total:0,maxPageNum:0, data:[]｝
    */
    @GetMapping("/list")
    public PerResult list(User user,  @RequestParam(defaultValue="1")int page,  @RequestParam(defaultValue="10")int limit){
        return userService.queryByPage(user,page,limit);
    }




    /*编辑用户
    请求方法： PUT/POST
    url： /user/edit
    参数 : userId(必须),username,userPass,userStatus
    响应结果：
    成功： ｛code:200,msg:"",data:null｝
    失败：
    失败｛code:500,msg:"错误信息",data:null｝
    重名 {code: 300,msg:"名字重复",data:""}
*/
    @PostMapping("/update")
    public PerResult update(@RequestBody User user){
        System.out.println(user+"+++++++++++++++++++++++++++++++++++++++++");
        return userService.update(user);
    }


    /*
    * 删除用户
    请求方法： GET
    url： /user/
    参数 : userId
    响应结果：
    成功： ｛code:200,msg:"",data:null｝
    失败： ｛code:500,msg:"",data:null｝
    *
    * */
    @DeleteMapping("/{userId}")
    public PerResult deleteById(@PathVariable Long userId){
        return userService.deleteUpdateStatus(userId);
    };

    @DeleteMapping("/deletes")
    public PerResult deleteSelect( Long[] userId){
        System.out.println(userId+"+++++++++++++++++++++++++++++++++++++++++++++++");
        return userService.deleteUpdateSelect(userId);
    };




}
